import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import scipy.stats as s
import matplotlib.patches as mpatches
def printMaximumValues(maxDay,result):
print("Maximalny 15-minutovy vykon namerany dna {} : {} W".format(str(maxDay.index[0])[:11],str(round(np.amax(maxDay.values),2))))
print("Maximalny vykon bol dosiahnuty v case {}".format(str(maxDay.columns[result[1][0]])))
print("\n\n")
def UsageInDayGraph(meteringPointName,df_X,TplotColor='blue'):
result = np.where(df_X.values == np.amax(df_X.values))
maxDay = df_X.iloc[result[0][0]:result[0][0]+1]
result = np.where(maxDay.values == np.amax(maxDay.values))
ax = df_X.T.plot(figsize=(20,8), legend=False, color=TplotColor, alpha=0.2)
# if maxDayPlot:
# ax = maxDay.T.plot(figsize=(20,8), legend=False, color='black',ax=ax)
plt.title("Summárny denný výkon (W) pre "+meteringPointName)
plt.ylabel('Sumárny výkon')
plt.xlabel('Denný priebeh')
black_patch = mpatches.Patch(color='black', label='Maximalny denny pribeh vykonu')
plt.legend(handles=[black_patch], prop={'size': 20})
# if saveImg:
# plt.savefig('./plots/'+meteringPointName+'_KW_frequency_daySum_plot.png')
plt.show()
printMaximumValues(maxDay,result)
def loadParsedData():
df = pd.read_csv("./data_spotreba/arcos_final.csv", delimiter = ",")
df['Date'] = pd.to_datetime(df['Date'], format='%d.%m.%Y')
df = df.fillna(0)
return df
df = loadParsedData()
mps = list(df['MeteringPoint'].unique())
for mp in mps:
df = loadParsedData()
df = df[df['MeteringPoint'] == mp]
df = df.drop(columns=['MeteringPoint'])
dfGrouped = df.groupby('Date').sum()
UsageInDayGraph(mp,dfGrouped)
df = loadParsedData()
df = df.drop(columns=['MeteringPoint'])
dfGrouped = df.groupby('Date').sum()
UsageInDayGraph("celkove",dfGrouped)
def getTrafo(x,df):
trafoName = df[df['MeteringPoint'] == str(x)]['trafo'].values[0]
return trafoName
df = pd.read_csv("./data_spotreba/central_ba.csv", delimiter = ";")
df = df.drop(columns="Source")
trafos_id = pd.read_excel("./data_spotreba/central_trafo.xlsx", index_col=None)
df['MeteringPoint'] = df['MeteringPoint'].apply(lambda x : getTrafo(x,trafos_id))
df['Date'] = pd.to_datetime(df['Date'], format='%d.%m.%Y')
df = df.fillna(0)
mps = list(df['MeteringPoint'].unique())
for mp in mps:
df = pd.read_csv("./data_spotreba/central_ba.csv", delimiter = ";")
df = df.drop(columns="Source")
trafos_id = pd.read_excel("./data_spotreba/central_trafo.xlsx", index_col=None)
df['MeteringPoint'] = df['MeteringPoint'].apply(lambda x : getTrafo(x,trafos_id))
df['Date'] = pd.to_datetime(df['Date'], format='%d.%m.%Y')
df = df.fillna(0)
df = df[df['MeteringPoint'] == mp]
df = df.drop(columns=['MeteringPoint'])
dfGrouped = df.groupby('Date').sum()
UsageInDayGraph(mp,dfGrouped)
df = pd.read_csv("./data_spotreba/central_ba.csv", delimiter = ";")
df = df.drop(columns="Source")
trafos_id = pd.read_excel("./data_spotreba/central_trafo.xlsx", index_col=None)
df['MeteringPoint'] = df['MeteringPoint'].apply(lambda x : getTrafo(x,trafos_id))
df['Date'] = pd.to_datetime(df['Date'], format='%d.%m.%Y')
df = df.fillna(0)
df = df.drop(columns=['MeteringPoint'])
dfGrouped = df.groupby('Date').sum()
UsageInDayGraph("Celkove",dfGrouped)
def createDictonary():
mp = pd.read_csv("data_spotreba/data_oc_central/Metering_Points_Central.csv", delimiter = ",")
mpDic = dict()
for index, row in mp.iterrows():
mpDic[row['Metering Code']] = row['koncentrator']
return mpDic
def loadCentral():
dfs = []
mpDic = createDictonary();
for i in range(2,12):
dfs.append(pd.read_csv("data_spotreba/data_oc_central/"+str(i)+".csv",delimiter = ";"))
df = pd.concat(dfs)
df = df.drop(columns="Source")
df['MeteringPoint'] = df['MeteringPoint'].apply(lambda x : mpDic[x])
df['Date'] = pd.to_datetime(df['Date'], format='%d.%m.%Y')
df = df.fillna(0)
return df
df = loadCentral()
df = loadCentral()
mps = list(df['MeteringPoint'].unique())
for mp in mps:
df = loadCentral()
df = df[df['MeteringPoint'] == mp]
df = df.drop(columns=['MeteringPoint'])
dfGrouped_central = df.groupby('Date').sum()
UsageInDayGraph(mp,dfGrouped_central)
dfC = loadCentral()
dfC = dfC.drop(columns=['MeteringPoint'])
dfGroupedXX = dfC.groupby('Date').sum()
UsageInDayGraph("Celkove",dfGroupedXX)
def loadDataSNT():
df = pd.read_csv("data_spotreba/data_snt/data.csv",delimiter=";")
return df
df = loadDataSNT()
dfGrouped = df.groupby('Date').sum()
dfGrouped = dfGrouped.drop(columns={"week"})
UsageInDayGraph("S&T",dfGrouped)
eicToCustomerDict = {
"24ZSLZTR1600002D00000000000000000" : "Johra Mont",
"24ZSLZTR1600003B00000000000000000" : "Martin Zdinak",
"24ZSLZTR1600004900000000000000000" : "Ubytovna",
"24ZSLZTR1600005700000000000000000" : "Metal Container",
"24ZSLZTR6300001X00000000000000000" : "Tipo",
"24ZSLZTR6300003T00000000000000000" : "Juva",
"24ZSLZTR6300004R00000000000000000" : "Tomi",
"24ZSLZTR6300006N00000000000000000" : "Autogaraze",
"24ZSLZTR6300009Y00000000000000000" : "Amas",
"24ZSLZTR6300010W00000000000000000" : "Matmi",
"24ZSLZTR6300011U00000000000000000" : "TMC",
"24ZSLZTR6300013Q00000000000000000" : "Vermex",
"24ZSLZTR6300014O00000000000000000" : "Drustav",
"24ZSLZTR6300016K00000000000000000" : "Duklastav",
"24ZSLZTR6300017I00000000000000000" : "MU",
"24ZSLZTR6300020T00000000000000000" : "Protan",
"24ZSLZTR6300021R00000000000000000" : "Zuda",
}
customerTrafoNumIdDict = {
"Johra Mont" : "TR160",
"Martin Zdinak" : "TR160",
"Ubytovna" : "TR160",
"Metal Container" : "TR160"
}
def loadTrafo():
dfs = []
mpDic = createDictonary();
for i in range(2,13):
dfs.append(pd.read_csv("data_spotreba/data_trafo/"+str(i)+".csv",delimiter = ";"))
df = pd.concat(dfs)
df = df.drop(columns="Source")
df['MeteringPoint'] = df['MeteringPoint'].apply(lambda x : eicToCustomerDict[x])
df['Trafo'] = df['MeteringPoint'].apply(lambda x:"TR630" if x not in customerTrafoNumIdDict else "TR160" )
return df
df = loadTrafo()
df = loadTrafo()
mps = list(df['MeteringPoint'].unique())
for mp in mps:
df = loadTrafo()
df = df[df['MeteringPoint'] == mp]
df = df.drop(columns=['MeteringPoint'])
dfGrouped_central = df.groupby('Date').sum()
UsageInDayGraph(mp,dfGrouped_central)
df = loadTrafo()
df = df.drop(columns=['MeteringPoint'])
dfGrouped_central = df.groupby('Date').sum()
UsageInDayGraph("Celkove",dfGrouped_central)